﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//union Un 
//{
//	char c;//1个字节
//	int i;//4个字节
//};
//
//int main()
//{
//	union Un u;
//	printf("%zd\n", sizeof(union Un));//4  为char类型的c分配4个字节的空间
//	printf("%p\n", &u);//008FFA9C
//	printf("%p\n", &(u.c));//008FFA9C
//	printf("%p\n", &(u.i));//008FFA9C
//	//联合体类型变量u与成员c、成员i的地址相同,由此可见，联合体中的成员是共用同一块内存空间的
//	return 0;
//}



//#include <stdio.h>
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	un.i = 0x11223344;
//	un.c = 0x55;
//	printf("%x\n", un.i);
//	return 0;
//}



//#include <stdio.h>
//union Un1
//{
//	//当成员变量是数组时，对齐数 = 数组元素的大小与编译器默认的对齐数中的较小值
//	char c[5];//数组元素占1个字节，编译器默认的对齐数是8，则c的对齐数是1
//	int i;//i占4个字节，编译器默认的对齐数是8，则i的对齐数是4
//	//所有成员中，最大的对齐数是4，则该联合体类型的大小必须是4的倍数
//};
//union Un2
//{
//	//当成员变量是数组时，对齐数 =数组元素的大小与编译器默认的对齐数中的较小值
//	short c[7];//数组元素占2个字节，编译器默认的对齐数是8，则c的对齐数是2
//	int i;//i占4个字节，编译器默认的对齐数是8，则i的对齐数是4
//	//所有成员中，最大的对齐数是4，则该联合体类型的大小必须是4的倍数
//};
//int main()
//{
//	printf("%d\n", sizeof(union Un1));//8
//	printf("%d\n", sizeof(union Un2));//16
//	return 0;
//}

//int check_sys()
//{
//	union   //匿名联合体类型，易知该类型占4个字节
//	{
//		int i;
//		char c;
//	}un;
//	un.i = 1;
//	//1的补码00000000000000000000000000000001
//	//1的补码的16进制表示形式:0x00000001
//	return un.c;//返回1是⼩端，返回0是⼤端
//}



//int main()
//{
//	printf("%d\n", MALE);//3
//	printf("%d\n", FEMALE);//5
//	printf("%d\n", SECRET);//7
//	return 0;
//}


enum Sex//性别
{

	MALE,
	FEMALE,
	SECRET
};

int main()
{
	enum Sex a= 0;//因为MALE的值为0，将MALE赋值为枚举类型的变量a
	return 0;
}